home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume2 / fun / nethack.a2 < prev    next >
Text File  |  1988-12-02  |  19KB  |  594 lines

  1. Path: xanth!nic.MR.NET!hal!cwjcc!gatech!rutgers!mit-eddie!ll-xn!adelie!infinet!ulowell!page
  2. From: page@swan.ulowell.edu (Bob Page)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v02i069:  nethack - D&D-like game (amiga additions), Part02/02
  5. Message-ID: <10400@swan.ulowell.edu>
  6. Date: 1 Dec 88 23:39:16 GMT
  7. Organization: University of Lowell, Computer Science Dept.
  8. Lines: 583
  9. Approved: page@swan.ulowell.edu
  10.  
  11. Submitted-by: u211344@hnykun11.bitnet (Olaf 'Rhialto' Seibert)
  12. Posting-number: Volume 2, Issue 69
  13. Archive-name: fun/nethack.a2
  14.  
  15. #    This is a shell archive.
  16. #    Remove everything above and including the cut line.
  17. #    Then run the rest of the file through sh.
  18. #----cut here-----cut here-----cut here-----cut here----#
  19. #!/bin/sh
  20. # shar:    Shell Archiver
  21. #    Run the following text with /bin/sh to create:
  22. #    NetHack.cnf
  23. #    fcntl.h
  24. #    hack.lnk
  25. #    include.c
  26. #    makefile
  27. #    news
  28. #    signal.h
  29. #    stdio.h
  30. #    test.c
  31. # This archive created: Thu Dec  1 17:50:08 1988
  32. cat << \SHAR_EOF > NetHack.cnf
  33. # A '#' at the beginning of a line means the rest of the line is a comment.
  34.  
  35. # This configuration file is set up for three cases, a person with a hard
  36. # disk as DH0:, a person with a lot of RAM for a ram disk, and several people
  37. # with two floppy disks.  The default configuration is the second one.
  38. # To change configuration, comment out the unwanted configurations, and
  39. # remove the comment from the configuration you want.
  40.  
  41. # I use OPTIONS=rest_on_space,time,packorder:%/=?!+)[*0,endgame:10 t / 2
  42. a,nopickup
  43.  
  44. OPTIONS=dogname:Bobbie,rest_on_space,time,packorder:%/=?!+)[*0,endgame:10 t / 2
  45. a,nopickup
  46.  
  47. # The Path. Used to find NetHack.cnf, record, help, hh, and data.
  48. # HACKDIR is always tried first. Initially Ram:;df0:;NetHack:
  49. #PATH=NetHack:
  50.  
  51. # A hard disk configuration.
  52.  
  53. #HACKDIR=DH0:games/nethack
  54. #SAVE=DH0:games/nethack/bones;n
  55. ##RAMDISK=Ram:
  56. #LEVELS=DH0:games/nethack/bones
  57.  
  58. # A floppy configuration.
  59.  
  60. HACKDIR=NetHack:
  61. LEVELS=NetHack:levels
  62. SAVE=NetHack:save
  63. RAMDISK=Ram:
  64.  
  65. # A ram disk configuration.
  66. # Don't forget to copy record, hh, help, and data to HACKDIR, or to
  67. # include their directory in PATH.
  68.  
  69. #HACKDIR=Ram:
  70. #PATH=NetHack:
  71. #LEVELS=Ram:
  72. #SAVE=Ram:
  73.  
  74. # The 18 GRAPHICS characters (0-17) are:
  75. # stone, vertical wall, horizontal wall, top left corner, top right corner
  76. # bottom left corner, bottom right corner, door, floor, corridor, up stairs,
  77. # down stairs, trap, pool, fountain, throne, web, kitchen sink
  78. # You need not specify all of them.
  79. # Note that the hack.font has special graphics characters from 192 on.
  80. GRAPHICS = 032 192 193 194 195 196 197 198 046 035 060 062 094 123 125 092 034
  81. 035
  82. #GRAPHICS= 032 124 045 174 174 224 167 043 046 035 060 062 094 123 125 092 034
  83. 035
  84. SHAR_EOF
  85. cat << \SHAR_EOF > fcntl.h
  86. /* Copyright (C) 1986,1987 by Manx Software Systems, Inc. */
  87.  
  88. #define O_RDONLY        0
  89. #define O_WRONLY        1
  90. #define O_RDWR          2
  91. #define O_CREAT         0x0100
  92. #define O_TRUNC         0x0200
  93. #define O_EXCL          0x0400
  94. #define O_APPEND        0x0800
  95.  
  96. #define O_CONRAW        0x4000
  97. #define O_STDIO         0x8000
  98.  
  99. extern struct _dev {
  100.         long    fd;
  101.         short   mode;
  102. } *_devtab;
  103.  
  104. extern short _numdev;
  105.  
  106. #define O_BINARY        0   /* For MSDOS */
  107. #define setmode(f,m)
  108. SHAR_EOF
  109. cat << \SHAR_EOF > hack.lnk
  110. +SS -w
  111. -o NetHack
  112. amigaTermcap.o amigaWindow.o amigaTTY.o
  113. amigaDos.o amigaUnix.o
  114. alloc.o bones.o dog.o dothrow.o pcmain.o
  115. mkmaze.o mkobj.o mkshop.o
  116. monst.o o_init.o polyself.o pray.o pri.o
  117. rip.o rnd.o rumors.o
  118. search.o sit.o steal.o timeout.o
  119. topl.o track.o vault.o
  120. version.o wield.o wizard.o worm.o worn.o
  121. apply.o cmd.o decl.o do.o do_name.o do_wear.o
  122. dogmove.o eat.o end.o engrave.o fight.o fountain.o
  123. hack.o invent.o lev.o makemon.o
  124. mhitu.o mklev.o mon.o monmove.o objnam.o
  125. options.o pager.o potion.o prisym.o read.o
  126. shk.o shknam.o spell.o
  127. topten.o trap.o u_init.o write.o save.o zap.o
  128. -lcl
  129. SHAR_EOF
  130. cat << \SHAR_EOF > include.c
  131. #include "stdio.h"
  132. #include "hack.h"
  133.  
  134. SHAR_EOF
  135. cat << \SHAR_EOF > makefile
  136. #    Hack Makefile.
  137. #    SCCS Id: @(#)Makefile.Amiga    2.3    88/07/10
  138.  
  139. #   Options: (case insignificant)
  140. #   +q  string literals to data segment
  141. #   +l  long (32 bit) integers
  142. #   +c  large code (i.e. not pc-relative)
  143. #   +d  large data (i.e. not relative to A4)
  144. #   +i  include precompiled symbol table
  145. #   library: cl (compiled with +cd)
  146. #   using the ARP setdate command as a touch-replacement.
  147.  
  148. 1=   een:
  149. 2=   twee:
  150. E=   een\:
  151. T=   twee\:
  152. O =
  153. C =  cc +cI$Osyms -DAMIGA -o# $Oxxx.o $1xxx.c
  154.  
  155. .PRECIOUS:  $1onames.h $Orumors $Odata $1date.h $1trap.h
  156.  
  157. MAIN = $1pcmain.c
  158. TTY  = $1amiga/amigaTTY.c
  159. UNIX = $1amiga/amigaUnix.c
  160. TERM = $1amiga/amigaTermcap.c
  161. DOS  = $1amiga/amigaDos.c
  162.  
  163. # make NetHack
  164. GAME     = nethack
  165.  
  166. AUX = help hh nethack.6 nethack.sh
  167. VARAUX = data rumors
  168.  
  169. HOBJ = $OamigaTermcap.o $OamigaWindow.o $OamigaTTY.o \
  170.     $OamigaDos.o $OamigaUnix.o \
  171.     $Oalloc.o $Obones.o $Odog.o $Odothrow.o $Opcmain.o \
  172.     $Omkmaze.o $Omkobj.o $Omkshop.o \
  173.     $Omonst.o $Oo_init.o $Opolyself.o $Opray.o $Opri.o \
  174.     $Orip.o $Ornd.o $Orumors.o \
  175.     $Osearch.o $Osit.o $Osteal.o $Otimeout.o \
  176.     $Otopl.o $Otrack.o $Ovault.o \
  177.     $Oversion.o $Owield.o $Owizard.o $Oworm.o $Oworn.o \
  178.     $Oapply.o $Ocmd.o $Odecl.o $Odo.o $Odo_name.o $Odo_wear.o \
  179.     $Odogmove.o $Oeat.o $Oend.o $Oengrave.o $Ofight.o $Ofountain.o \
  180.     $Ohack.o $Oinvent.o $Olev.o $Omakemon.o \
  181.     $Omhitu.o $Omklev.o $Omon.o $Omonmove.o $Oobjnam.o \
  182.     $Ooptions.o $Opager.o $Opotion.o $Oprisym.o $Oread.o \
  183.     $Osave.o $Oshk.o $Oshknam.o $Ospell.o \
  184.     $Otopten.o $Otrap.o $Ou_init.o $Owrite.o $Ozap.o
  185.  
  186. $(GAME): $(HOBJ)
  187.         cd $O
  188.         ln -f hack.lnk
  189.  
  190. $Osyms: $1hack.h $1objects.h $1amiga/stdio.h makedefs
  191.         cc +cH$Osyms -DAMIGA -ao $Oxxx@ $1amiga/include.c
  192.         delete $Oxxx@
  193.         l syms
  194.  
  195. $Omakedefs: $Omakedefs.o $Oalloc.o
  196.         cd $O
  197.         ln -o makedefs alloc.o makedefs.o -lc
  198.  
  199. $Omakedefs.o: $1makedefs.c $1config.h
  200.         cc +c -DAMIGA -o $Omakedefs.o $1makedefs.c
  201.  
  202. RUMORFILES= $1rumors.base $1rumors.kaa $1rumors.mrx
  203.  
  204. $Orumors: $1config.h $(RUMORFILES) $Omakedefs
  205.         copy $1rumors.base rumors.base
  206.         copy $1rumors.kaa rumors.kaa
  207.         copy $1rumors.mrx rumors.mrx
  208.         makedefs -r
  209.         copy rumors $1rumors
  210.  
  211. $Odata: $1config.h $1data.base $Omakedefs
  212.         copy $1data.base data.base
  213.         makedefs -d
  214.         copy data $1data
  215.  
  216. $Edate.h: $Omakedefs $(MAIN) $(TTY) $(UNIX) $(TERM) $(DOS) $1amiga/amigaWindow.c
  217.         copy $1date.h date.h
  218.         makedefs -D
  219.         copy date.h $1date.h
  220.  
  221. $Etrap.h: $1config.h $Omakedefs
  222.         copy $1trap.h trap.h
  223.         makedefs -t
  224.         copy trap.h $1trap.h
  225.  
  226. $Eonames.h: $Omakedefs $1objects.h
  227.         copy $1objects.h objects.h
  228.         makedefs -o
  229.         copy onames.h $1onames.h
  230.  
  231. $OamigaUnix.o: $1amiga/amigaUnix.c $1hack.h $Osyms
  232.         $C $OamigaUnix.o $1amiga/amigaUnix.c
  233.  
  234. $OamigaTermcap.o: $1amiga/amigaTermcap.c $1hack.h $Osyms
  235.         $C $OamigaTermcap.o $1amiga/amigaTermcap.c
  236.  
  237. $OamigaWindow.o: $1amiga/amigaWindow.c $1amiga/amigaMenu.c $Osyms
  238.         $C $OamigaWindow.o $1amiga/amigaWindow.c +m
  239.  
  240. $OamigaTTY.o: $1amiga/amigaTTY.c $1hack.h $1func_tab.h $Osyms
  241.         $C $OamigaTTY.o $1amiga/amigaTTY.c
  242.  
  243. $OamigaDos.o: $1amiga/amigaDos.c $1hack.h $Osyms
  244.         $C $OamigaDos.o $1amiga/amigaDos.c
  245.  
  246. clean:
  247.         delete *.o
  248.  
  249. spotless: clean
  250.         delete $(GAME) makedefs
  251.         delete $(VARAUX) main.c tty.c unix.c
  252.  
  253. depend: # Should put one source disk in df0: and other in df1:
  254.         mkd -Idf0: -Idf1: -m df0:*.(c|h) df1:*.(c|h)
  255.  
  256. # You may delete this line
  257.  
  258. $Eobjects.h: $1config.h $1objclass.h
  259.     setdate $1objects.h
  260. $Omakemon.o: $2makemon.c $1hack.h $Osyms
  261.     $C $Omakemon.o $2makemon.c
  262. $Ohack.o: $2hack.c $1hack.h $Osyms
  263.     $C $Ohack.o $2hack.c
  264. $Omon.o: $2mon.c $1hack.h $1mfndpos.h $Osyms
  265.     $C $Omon.o $2mon.c
  266. $Ounixtty.o: $2unixtty.c $1extern.h $1hack.h $1func_tab.h $Osyms
  267.     $C $Ounixtty.o $2unixtty.c
  268. $Ounixunix.o: $2unixunix.c $1hack.h $1mkroom.h $Osyms
  269.     $C $Ounixunix.o $2unixunix.c
  270. $Oinvent.o: $2invent.c $1hack.h $1wseg.h $Osyms
  271.     $C $Oinvent.o $2invent.c
  272. $Ozap.o: $2zap.c $1hack.h $Osyms
  273.     $C $Ozap.o $2zap.c
  274. $Ou_init.o: $2u_init.c $1hack.h $Osyms
  275.     $C $Ou_init.o $2u_init.c
  276. $Ofountain.o: $2fountain.c $1hack.h $1mkroom.h $Osyms
  277.     $C $Ofountain.o $2fountain.c
  278. $Omonmove.o: $2monmove.c $1hack.h $1mfndpos.h $Osyms
  279.     $C $Omonmove.o $2monmove.c
  280. $Odo.o: $2do.c $1hack.h $Osyms
  281.     $C $Odo.o $2do.c
  282. $Ofight.o: $2fight.c $1hack.h $Osyms
  283.     $C $Ofight.o $2fight.c
  284. $Ooptions.o: $2options.c $1config.h $1hack.h $Osyms
  285.     $C $Ooptions.o $2options.c
  286. $Oread.o: $2read.c $1hack.h $Osyms
  287.     $C $Oread.o $2read.c
  288. $Odecl.o: $2decl.c $1hack.h $1mkroom.h $Osyms
  289.     $C $Odecl.o $2decl.c
  290. $Odo_wear.o: $2do_wear.c $1hack.h $Osyms
  291.     $C $Odo_wear.o $2do_wear.c
  292. $Opotion.o: $2potion.c $1hack.h $Osyms
  293.     $C $Opotion.o $2potion.c
  294. $Odogmove.o: $2dogmove.c $1hack.h $1mfndpos.h $1mkroom.h $1edog.h $Osyms
  295.     $C $Odogmove.o $2dogmove.c
  296. $Oshknam.o: $2shknam.c $1hack.h $1mkroom.h $1eshk.h $Osyms
  297.     $C $Oshknam.o $2shknam.c
  298. $Otopten.o: $2topten.c $1hack.h $Osyms
  299.     $C $Otopten.o $2topten.c -E200
  300. $Oeat.o: $2eat.c $1hack.h $Osyms
  301.     $C $Oeat.o $2eat.c
  302. $Oobjnam.o: $2objnam.c $1hack.h $Osyms
  303.     $C $Oobjnam.o $2objnam.c
  304. $Opager.o: $2pager.c $1hack.h $Osyms
  305.     $C $Opager.o $2pager.c
  306. $Omklev.o: $2mklev.c $1hack.h $1mkroom.h $Osyms
  307.     $C $Omklev.o $2mklev.c -E300
  308. $Odo_name.o: $2do_name.c $1hack.h $Osyms
  309.     $C $Odo_name.o $2do_name.c
  310. $Oapply.o: $2apply.c $1hack.h $1edog.h $1mkroom.h $Osyms
  311.     $C $Oapply.o $2apply.c
  312. $Omhitu.o: $2mhitu.c $1hack.h $Osyms
  313.     $C $Omhitu.o $2mhitu.c
  314. $Ospell.o: $2spell.c $1hack.h $Osyms
  315.     $C $Ospell.o $2spell.c
  316. $Oprisym.o: $2prisym.c $1hack.h $1wseg.h $Osyms
  317.     $C $Oprisym.o $2prisym.c
  318. $Olev.o: $2lev.c $1hack.h $1mkroom.h $1wseg.h $Osyms
  319.     $C $Olev.o $2lev.c
  320. $Owrite.o: $2write.c $1hack.h $Osyms
  321.     $C $Owrite.o $2write.c
  322. $Oshk.o: $2shk.c $1hack.h $1mfndpos.h $1mkroom.h $1eshk.h $Osyms
  323.     $C $Oshk.o $2shk.c
  324. $Oengrave.o: $2engrave.c $1hack.h $Osyms
  325.     $C $Oengrave.o $2engrave.c
  326. $Oend.o: $2end.c $1hack.h $Osyms
  327.     $C $Oend.o $2end.c
  328. $Ocmd.o: $2cmd.c $1hack.h $1func_tab.h $Osyms
  329.     $C $Ocmd.o $2cmd.c
  330. $Osave.o: $2save.c $1hack.h $Osyms
  331.     $C $Osave.o $2save.c
  332. $Otrap.o: $2trap.c $1hack.h $1edog.h $1mkroom.h $Osyms
  333.     $C $Otrap.o $2trap.c
  334. #Other disk starts here
  335. $Oworm.o: $1worm.c $1hack.h $1wseg.h $Osyms
  336.     $C $Oworm.o $1worm.c
  337. $Omkobj.o: $1mkobj.c $1hack.h $Osyms
  338.     $C $Omkobj.o $1mkobj.c
  339. $Ehack.h: $1extern.h $1objclass.h $1monst.h $1gold.h $1trap.h $1flag.h $1rm.h
  340.     setdate $1hack.h
  341. $Eyou.h: $1config.h $1onames.h $1permonst.h
  342.     setdate $1you.h
  343. $Opcmain.o: $1pcmain.c $1hack.h $Osyms
  344.     $C $Opcmain.o $1pcmain.c
  345. $Opolyself.o: $1polyself.c $1hack.h $Osyms
  346.     $C $Opolyself.o $1polyself.c
  347. $Orumors.o: $1rumors.c $1hack.h $Osyms
  348.     $C $Orumors.o $1rumors.c
  349. $Otrack.o: $1track.c $1hack.h $Osyms
  350.     $C $Otrack.o $1track.c
  351. $Otopl.o: $1topl.c $1hack.h $Osyms
  352.     $C $Otopl.o $1topl.c
  353. $Oo_init.o: $1o_init.c $1config.h $1objects.h $1onames.h $Osyms
  354.     $C $Oo_init.o $1o_init.c -Z6000 +Q
  355. $Owizard.o: $1wizard.c $1hack.h $Osyms
  356.     $C $Owizard.o $1wizard.c
  357. $Ornd.o: $1rnd.c $1config.h $Osyms
  358.     $C $Ornd.o $1rnd.c
  359. $Omkmaze.o: $1mkmaze.c $1hack.h $1mkroom.h $Osyms
  360.     $C $Omkmaze.o $1mkmaze.c
  361. $Otimeout.o: $1timeout.c $1hack.h $Osyms
  362.     $C $Otimeout.o $1timeout.c
  363. $Oworn.o: $1worn.c $1hack.h $Osyms
  364.     $C $Oworn.o $1worn.c
  365. $Ounixmain.o: $1unixmain.c $1hack.h $Osyms
  366.     $C $Ounixmain.o $1unixmain.c
  367. $Ovault.o: $1vault.c $1hack.h $1mkroom.h $Osyms
  368.     $C $Ovault.o $1vault.c
  369. $Opctty.o: $1pctty.c $1hack.h $1func_tab.h $Osyms
  370.     $C $Opctty.o $1pctty.c
  371. $Opcunix.o: $1pcunix.c $1hack.h $Osyms
  372.     $C $Opcunix.o $1pcunix.c
  373. $Omonst.o: $1monst.c $1hack.h $1eshk.h $Osyms
  374.     $C $Omonst.o $1monst.c
  375. $Osit.o: $1sit.c $1hack.h $Osyms
  376.     $C $Osit.o $1sit.c
  377. $Omkshop.o: $1mkshop.c $1hack.h $1mkroom.h $Osyms
  378.     $C $Omkshop.o $1mkshop.c
  379. $Odog.o: $1dog.c $1hack.h $1edog.h $1mkroom.h $Osyms
  380.     $C $Odog.o $1dog.c
  381. $Osteal.o: $1steal.c $1hack.h $Osyms
  382.     $C $Osteal.o $1steal.c
  383. $Orip.o: $1rip.c $1hack.h $Osyms
  384.     $C $Orip.o $1rip.c +Q
  385. $Oalloc.o: $1alloc.c
  386.     cc +c -DAMIGA -DDGK -o $Oalloc.o $1alloc.c
  387. $Obones.o: $1bones.c $1hack.h $1amiga/fcntl.h $Osyms
  388.     $C $Obones.o $1bones.c
  389. $Osearch.o: $1search.c $1hack.h $Osyms
  390.     $C $Osearch.o $1search.c
  391. $Owield.o: $1wield.c $1hack.h $Osyms
  392.     $C $Owield.o $1wield.c
  393. $Oversion.o: $1version.c $1hack.h $1date.h $Osyms
  394.     $C $Oversion.o $1version.c
  395. $Eextern.h: $1config.h $1spell.h $1obj.h $1you.h
  396.     setdate $1extern.h
  397. $Opray.o: $1pray.c $1hack.h $Osyms
  398.     $C $Opray.o $1pray.c
  399. $Opri.o: $1pri.c $1hack.h $Osyms
  400.     $C $Opri.o $1pri.c
  401. $Odothrow.o: $1dothrow.c $1hack.h $Osyms
  402.     $C $Odothrow.o $1dothrow.c
  403. SHAR_EOF
  404. cat << \SHAR_EOF > news
  405.  
  406.  
  407.                ===--->   Amiga NetHack News Flash   <---===
  408.  
  409.  
  410.     This is Amiga NetHack 2.3e, based on the sources as posted on
  411. comp.sources.games, and their updates, by Mike Stephenson. It has been
  412. ported to your Amiga by Olaf Seibert (KosmoSoft), Vossendijk 149,
  413. 6534 TN Nijmegen, the Netherlands.
  414.  
  415.     ********************************************************************
  416.     *   This program or any associated or related files may not be     *
  417.     *   used for profit in any way. They may only be redistributed     *
  418.     *   in their original form, and charges may be made only to cover  *
  419.     *   material and transportation costs.                             *
  420.     *   Also, this notice must remain intact at all times.             *
  421.     ********************************************************************
  422.  
  423.     I added the PATH in NetHack.cnf, which is used on files like record,
  424. help, hh and data. The HACKDIR directory is always tried first to locate
  425. one of those files, and if not found, the PATH is tried. Note that you
  426. receive a warning message when 'record' could not be found in the HACKDIR.
  427. This is because 'record' will be written to, while the other files are used
  428. to read only. This warning won't harm as long as the record file can be
  429. found along the PATH. Initially the PATH is Ram:;df0:;NetHack:
  430.  
  431.     I also changed the format of level, bones and save files, so that they
  432. would be smaller. Level and bones files can get about half the size they
  433. otherwise would have been (about 4K minimum), but save files are less
  434. affected.
  435.  
  436.     NetHack uses the font Hack.font. You need not re-assign FONTS: to the
  437. NetHack disk, but it must be reachable on NetHack:, ie your game disk must
  438. be called NetHack, or the directory you move it into must be ASSIGNed
  439. NetHack:. Otherwise, there are no restrictions on assigns :-) Note that in
  440. order to load the font, the diskfont.library will be opened so you need to
  441. keep your Workbench disk around. If you have enough memory, however, the
  442. font may remain in memory between successive games, and the requester for
  443. the Workbench disk may safely be cancelled after the first game. The only
  444. bad thing that could happen is that you get accented letters instead of
  445. graphics characters.
  446.  
  447.     Speaking of graphic characters, I have put in a few starting from $C0.
  448. They are most useful as walls and corners. There are two sets of these:
  449. single and double line walls. I also duplicated the non-letter characters
  450. with ASCII codes with the high bit set. You may wish to use, for example,
  451. the alt + sign instead of the normal + for doors, since + signs are
  452. highlighted because they could be spell books. (all objects get an extra
  453. accent by a black background (if you have standard Workbench colors), and
  454. monsters also have an orange foreground).
  455.  
  456.     Sounds complicated? Well, it depends. Just have a good game.
  457.  
  458. SHAR_EOF
  459. cat << \SHAR_EOF > signal.h
  460. #define SIG_IGN     1
  461. #define SIG_DFL     0
  462. #define signal(x,y) SIG_IGN
  463.  
  464. SHAR_EOF
  465. cat << \SHAR_EOF > stdio.h
  466. /* Copyright (C) 1982, 1984, 1986 by Manx Software Systems */
  467. #ifndef _STDIO_H
  468. #define _STDIO_H
  469.  
  470. #define fgetc getc
  471. #define fputc putc
  472. #ifndef NULL
  473. #define NULL 0L
  474. #endif
  475. #define EOF -1
  476.  
  477.  
  478. #define BUFSIZ 1024
  479. #define MAXSTREAM       20
  480.  
  481. #define _BUSY   0x01
  482. #define _ALLBUF 0x02
  483. #define _DIRTY  0x04
  484. #define _EOF    0x08
  485. #define _IOERR  0x10
  486. #define _TEMP   0x20    /* temporary file (delete on close) */
  487.  
  488. typedef struct {
  489.         char *_bp;              /* current position in buffer */
  490.         char *_bend;            /* last character in buffer + 1 */
  491.         char *_buff;            /* address of buffer */
  492.         char _flags;            /* open mode, etc. */
  493.         char _unit;             /* token returned by open */
  494.         char _bytbuf;           /* single byte buffer for unbuffer streams */
  495.         short _buflen;          /* length of buffer */
  496.         char *_tmpname;         /* name of file for temporaries */
  497. } FILE;
  498.  
  499. extern FILE Cbuffs[];
  500. FILE *fopen();
  501. long ftell();
  502.  
  503. #define stdin       @#$%(&Cbuffs[0])    /* Syntax error ! */
  504. #define stdout      @#$%(&Cbuffs[1])
  505. #define stderr      (&Cbuffs[2])
  506. #define getchar()   WindowGetchar()
  507. #define putchar(c)  WindowPutchar(c)
  508. #define puts(s)     WindowPuts(s)
  509. #define stdout_puts(s) WindowFPuts(s)
  510. #define printf      WindowPrintf
  511. /*#define feof(fp) (((fp)->_flags&_EOF)!=0)*/
  512. #define ferror(fp) (((fp)->_flags&_IOERR)!=0)
  513. /*#define clearerr(fp) ((fp)->_flags &= ~(_IOERR|_EOF))*/
  514. /*#define fileno(fp) ((fp)->_unit)*/
  515. #define fflush(fp) WindowFlush()
  516. #define rewind(fp) fseek(fp, 0L, 0)
  517.  
  518. #define P_tmpdir        ""
  519. #define L_tmpnam        40
  520.  
  521. #endif
  522.  
  523. SHAR_EOF
  524. cat << \SHAR_EOF > test.c
  525. #include "stdio.h"
  526. #include "hack.h"
  527.  
  528. struct flag flags;
  529. struct you u;
  530.  
  531. curs_on_u(){}
  532. int multi;
  533. remember_topl(){}
  534. int in_doagain;
  535. savech(){}
  536. popch(){return 0;}
  537. pline(){}
  538. char *save_cm="";
  539. clrlin(){}
  540. parseoptions(){}
  541. xchar curx, cury;
  542. long *alloc(n){extern void *malloc();return malloc(n);}
  543. char extcmdlist;    /* NOT VERY USABLE */
  544. putstr(s)char*s;{WindowFPuts(s);}
  545. putsym(c)int c;{WindowPutchar(c);}
  546. char bones[1], *alllevels, permbones[1], *allbones, lock1[1], hackdir[1];
  547. char *configfile, plname[1], plnamesuffix, lock[1];
  548. int saveprompt, ramdisk;
  549. char SAVEF[1];
  550. char levels[1];
  551. struct symbols defsyms, showsyms;
  552.  
  553. extern char orgdir[];
  554.  
  555. main()
  556. {
  557.     int c;
  558.     int i;
  559.  
  560.     startup();
  561.     gettty();
  562.     printf("Dit is %s", "een test\n");
  563.  
  564.     getret();
  565.     putchar('\n');
  566.     chdir("df1:");
  567.     printf("Freediskspace: %ld\n", freediskspace(""));
  568.     for (i = 1023; i >= 0; i--)
  569.         putchar('x');
  570.  
  571.     getret();
  572.     putchar('\n');
  573.     for (i = 1023; i >= 0; i--)
  574.         putchar('x'), fflush(stdout);
  575.  
  576.     while (c = getchar()) {
  577.         putchar(c);
  578.         putchar(c | 128);
  579.         fflush(stdout);
  580.         if (c == 'q' || c == 'Q')
  581.             break;
  582.     }
  583.     chdir(orgdir);
  584.     settty();
  585.     CleanUp();
  586. }
  587.  
  588. SHAR_EOF
  589. #    End of shell archive
  590. exit 0
  591. -- 
  592. Bob Page, U of Lowell CS Dept.  page@swan.ulowell.edu  ulowell!page
  593. Have five nice days.
  594.